// 小明是一个销售员，客人在他的地方买了东西，付给了小明一定面值的钱之后，
// 小明需要把多余的钱退给客人。客人付给了小明n，小明的东西的售价为m，
// 小明能退回给客人的面额只能为[100,50,20,10,5,2,1]的组合。
// 现在小明想要使找出去纸币张数最小，请返回这个最小值。

// 示例 1：

// 输入: n=100, m=29
// 输出: 3
// 解释: 100-29=71 小明找回1张50，一张20，一张1。 所以答案为3。

// function fn(n, m) {
//     let pay = n - m
//     const arr = [100, 50, 20, 10, 5, 2, 1]
//     const out = []
//     for (let i = 0; i < arr.length; i++) {
//         if (isPay(out, n-m)) {
//             console.log('111',out.length)
//             return out.length
//         }
//         while(arr[i] <= pay) {
//             console.log('arr[i],pay',arr[i],pay)
//             out.push(arr[i])
//             pay -= arr[i]
//         }
//         // console.log('out,pay',out,pay)
   
//     }
 
// }
// function isPay(arr, s) {
//     return arr.reduce((a, b) => a + b,0) === s
// }
// // console.log(isPay([1],1))
// console.log(fn(100, 26))



// 2
function fn(n,m){
    let pay = n-m
    let coins = []
    const arr = [100,50,20,10,5,1]
    for(let i =0;i<arr.length;i++){
        while(arr[i]<=pay){
            coins.push(arr[i])
            pay = pay-arr[i]
        }
        if(pay===0){
            console.log(coins)
            return coins.length
        }
    }
    return -1
}
console.log(fn(100,1))